package cn.jsoup;

import cn.wanghaomiao.xpath.exception.XpathSyntaxErrorException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.jsoup.select.Evaluator;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
//package com.itheima.dao;
//
//public class UserDao{
//
//    public void save(){
//        System.out.println("save....")
//    }
//
//}
//
//
//    <?xml version="1.0" encoding="UTF-8">
//<beans>
//<bean id="userDao" class="cn.jsoupUserDao" method="save">
//</beans>
//
//        要求：执行xml文件中指定的类的指定方法


public class jsoupDemo7 {
    public static void main(String[] args) throws IOException, XpathSyntaxErrorException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        String path = jsoupDemo7.class.getClassLoader().getResource("test.xml").getPath();
        //获取html路径
        Document document = Jsoup.parse(new File(path), "UTF-8");
        //将html文件进行解析
        Element element = document.getElementsByTag("bean").get(0);
        //虎丘xml文件中的标签元素对象
        String aClass = element.attr("class");
        //获取标签中属性为class的值
        Class<?> aClass1 = Class.forName(aClass);
        //获取的文件中的属性值其实是一个类的全路径名，所以可以将这个类加载到内存中去
        Constructor<?> constructor = aClass1.getConstructor();
        //通过反射获取无参数构造方法
        Object o = constructor.newInstance();
        //创建这个类的对象
        Method save = aClass1.getMethod("save");
        //获取这个类的公共方法法
         save.invoke(o);
         //使用invoke调用方法法
    }
}
